package leetcode.problems;

import org.junit.Test;

/**
 * Created by gmwang on 2018/7/25
 * 最小范围
 */
public class _0727PeakIndexinaMountainArray {
    /**
     * Given an array A of integers, for each integer A[i] we may choose any x with -K <= x <= K, and add x to A[i].
         给定整数的数组A，对于每个整数a[i]，我们可以选择任何带有-k<＝x<＝k的x，并将x + A[i]。
         After this process, we have some array B.
         在这个过程之后，我们有一些数组B。
         Return the smallest possible difference between the maximum value of B and the minimum value of B.
         返回B的最大值与B的最小值之间的最小可能差值。

     *   Example 1:
         Input: A = [1], K = 0
         Output: 0
         Explanation: B = [1]

         Example 2:
         Input: A = [0,10], K = 2
         Output: 6
         Explanation: B = [2,8]

         Example 3:
         Input: A = [1,3,6], K = 3
         Output: 0
         Explanation: B = [3,3,3] or B = [4,4,4]

         Note:
         1 <= A.length <= 10000
         0 <= A[i] <= 10000
         0 <= K <= 10000
     */
    /**
     * 先比较某个值之前都是升序，再比较某个值之后都是降序
     * @param A
     * @return
     */
    public int smallestRangeI(int[] A, int K) {
        int res = 0;
        if(A.length < 3) return res;
        for (int i = 1; i < A.length; i++) {
            if(A[i] > A[i - 1]){
                res = i;
            }
        }
        return res;
    }
    @Test
    public void test() {
//        int[] ints = {0, 1, 0};
        int[] ints = {0,10};
        int k =2;
        int res = smallestRangeI(ints,k);
        System.out.println(res);
    }
}
